/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package client;

import comum.HibernateUtil;
import java.util.List;
import javax.persistence.Query;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author Jean
 */
public class CadastroUsuCRUD {
    
    public void salvar(Client cliente) {
		Session sessao = null;
		Transaction transacao = null;

		try {
			sessao = HibernateUtil.getSessionFactory().openSession();
			transacao = sessao.beginTransaction();
			sessao.save(cliente);
			transacao.commit();
		} catch (HibernateException e) {
			System.out.println("Não foi possível inserir o contato. Erro: " + e.getMessage());
		} finally {
			try {
				sessao.close();
			} catch (Throwable e) {
				System.out.println("Erro ao fechar operação de inserção. Mensagem: " + e.getMessage());
			}
		}
	}

	public void atualizar(Client cliente) {
		Session sessao = null;
		Transaction transacao = null;

		try {
			sessao = HibernateUtil.getSessionFactory().openSession();
			transacao = sessao.beginTransaction();
			sessao.update(cliente);
			transacao.commit();
		} catch (HibernateException e) {
			System.out.println("Não foi possível alterar o contato. Erro: " + e.getMessage());
		} finally {
			try {
				sessao.close();
			} catch (Throwable e) {
				System.out.println("Erro ao fechar operação de atualização. Mensagem: " + e.getMessage());
			}
		}
	}

	public void excluir(Client cliente) {
		Session sessao = null;
		Transaction transacao = null;

		try {
			sessao = HibernateUtil.getSessionFactory().openSession();
			transacao = sessao.beginTransaction();
			sessao.delete(cliente);
			transacao.commit();
		} catch (HibernateException e) {
			System.out.println("Não foi possível excluir o contato. Erro: " + e.getMessage());
		} finally {
			try {
				sessao.close();
			} catch (Throwable e) {
				System.out.println("Erro ao fechar operação de exclusão. Mensagem: " + e.getMessage());
			}
		}
	}

	public List<Client> listar() {
		Session sessao = null;
		Transaction transacao = null;
		Query consulta = null;
		List<Client> resultado = null;

		try {
			sessao = HibernateUtil.getSessionFactory().openSession();
			transacao = sessao.beginTransaction();
			consulta = (Query) sessao.createQuery("from Client");
			resultado = consulta.getResultList();//aqui foi modificado
			transacao.commit();
			return resultado;
		} catch (HibernateException e) {
			System.out.println("Não foi possível selecionar contatos. Erro: " + e.getMessage());
			throw new HibernateException(e);
		} finally {
			try {
				sessao.close();
			} catch (Throwable e) {
				System.out.println("Erro ao fechar operação de consulta. Mensagem: " + e.getMessage());
			}
		}
	}
	
	public Client buscaContato(int valor) {
		Client contato = null;
		Session sessao = null;
		Transaction transacao = null;
		Query consulta = null;

		try {
			sessao = HibernateUtil.getSessionFactory().openSession();
			transacao = sessao.beginTransaction();
			consulta = (Query) sessao.createQuery("from Contato where codigo = :parametro");
			consulta.setParameter("parametro", valor);//foi modificado
			contato = (Client) consulta.getSingleResult();
			transacao.commit();
			return contato;
		} catch (HibernateException e) {
			System.out.println("Não foi possível buscar contato. Erro: " + e.getMessage());
		} finally {
			try {
				sessao.close();
			} catch (Throwable e) {
				System.out.println("Erro ao fechar operação de buscar. Mensagem: " + e.getMessage());
			}
		}
		return contato;
	}
/*
	public static void main(String[] args) {
                HibernateUtil.getSessionFactory().openSession();
		CadastroUsuCRUD cliente = new CadastroUsuCRUD ();
                CadastroUsuario cad = new CadastroUsuario();
                String nome = tfLogin.gettext();
                String login = "jeanfg";
                String senha = "123";
                
                Client client = new Client();
                
                client.setNome(nome);
                client.setLogin(login);
                client.setSenha(senha);
                
                cliente.salvar(client);
                
            //    System.out.println("Total de registros cadastrados: " +cliente.listar().size());
                
                
                
                
		
	}
    */
}
